package bierki;

import java.awt.geom.Point2D;
import java.util.Vector;

public class Wieza extends Bierka {

	public Wieza(String obrazek,BierkaKolor kolor, int x, int y) {
		super(obrazek,BierkaTyp.WIEZA,kolor,x, y);
	}
	
	public Wieza(BierkaKolor kolor, int x, int y) {
		super(BierkaTyp.WIEZA,kolor,x, y);
	}

	@Override
	public boolean sprawdzRuch(Bierka[][] szachownica, int xk, int yk) {
		
		if (pozaSzachownica(xk,yk)) return false;
		
		if (sprawdzBicie(szachownica[xk][yk])) return false;
		
		int dx = xk - x; 
		int dy = yk - y;
		
		if (dx == 0) {
			int d = (int) Math.signum(dy);
			for (int yi = y + d; Math.abs(yk - yi) > 0 ; yi += d ) {
				if (szachownica[x][yi] != null ) return false;
			}
			
		} else if (dy == 0) {
			int d = (int) Math.signum(dx);
			for (int xi = x + d; Math.abs(xk - xi) > 0; xi += d ) {
				if (szachownica[xi][y] != null ) return false;
			}			
		} else return false;
		
		return true;
	}

	@Override
	public boolean sprawdzRuch(Bierka[][] szachownica, int xk, int yk, Krol krol) {
		
		if (pozaSzachownica(xk,yk)) return false;
		
		if (sprawdzBicie(szachownica[xk][yk])) return false;
		
		int dx = xk - x; 
		int dy = yk - y;
		
		if (dx == 0) {
			int d = (int) Math.signum(dy);
			for (int yi = y + d; Math.abs(yk - yi) > 0 ; yi += d ) {
				if (szachownica[x][yi] != null ) return false;
			}
			
		} else if (dy == 0) {
			int d = (int) Math.signum(dx);
			for (int xi = x + d; Math.abs(xk - xi) > 0; xi += d ) {
				if (szachownica[xi][y] != null ) return false;
			}			
		} else return false;
		
		if (sprawdzSzach(szachownica,xk,yk,krol)) return false;
		
		return true;
	}

	
	@Override
	public Vector<Point2D> validateMove(Bierka[][] plansza, int xp, int yp) {
		// TODO Auto-generated method stub	
		return null;
	}
	
	
	
}
